package com.spring.demo7.factory;

import org.springframework.beans.factory.support.BeanDefinitionReader;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * ImportResource:配置类中导入bean定义的配置文件
 */
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyImportResource {

    // 指定要导入的配置文件的路径列表

    /**
     * 这里说明一下资源文件路径的写法:
     * spring中资源文件路径最常用的有2种写法:
     * 1.以classpath:开头:检索目标为当前项目的classes目录
     * 2.以classpath*:开头:检索目标为当前项目的classes目录，以及项目中所有jar包中的目录
     * (1) 相对路径的方式
     * classpath:com/spring/demo7/test3/beans.xml或者
     * classpath*:com/spring/demo7/test3/beans.xm1
     * (2) / 绝对路径的方式
     * classpath:/com/spring/demo7/test3/beans.xm7
     * (3) * 文件通配符的方式
     * classpath:/com/spring/demo7/test3/beans-*.xm1
     * (4) * 目录通配符的方式
     * classpath:/com/spring/demo7/一个*号/beans-*.xml
     * (5) ** 递归任意子目录的方式
     * classpath:/com/spring/两个*号/beans-*.xml
     */

    @AliasFor("locations")
    String[] value() default {};

    @AliasFor("value")
    String[] locations() default {};

    // 指定bean定义的读取器，常见的配置bean的方式有xml和注解，其实还有其他方式，如properties文件的方式。
    // 如果用其他的方式，就要指定相应的解析器BeanDefinitionReader
    Class<? extends BeanDefinitionReader> reader() default BeanDefinitionReader.class;
}
